var gulp = require("gulp");
    // 引入gulp-connect
    connect = require("gulp-connect");
    sass = require('gulp-sass');
    sass.compiler = require('sass');
    babel = require('gulp-babel');
    uglify = require('gulp-uglify');
    cssmin = require('gulp-cssmin');
    proxy = require("http-proxy-middleware");
// 开启服务器 
gulp.task("connect", async () => {
    return connect.server({
        root: "dist",
        livereload: true,
        port: 3000,
        // 设置gulp代理
        middleware :function(){
            // 把代理的网址以数组的方式保存
            return [
                proxy('/pxx',{
                    // 代理的目标地址
                    target : 'https://mobile.yangkeduo.com/proxy/api/api/spike/promotion/list/spike',
                    changeOrigin:true ,
                    // 路径规则重写，去除代理名
                    pathRewrite:{'^/pxx':''}
                }),
                proxy('/dl',{
                    // 代理的目标地址
                    target : 'http://localhost/php/xiangmu-gulp/server/dl.php',
                    changeOrigin:true ,
                    // 路径规则重写，去除代理名
                    pathRewrite:{'^/dl':''}
                }),
                proxy('/zc',{
                    // 代理的目标地址
                    target : 'http://localhost/php/xiangmu-gulp/server/zc.php',
                    changeOrigin:true ,
                    // 路径规则重写，去除代理名
                    pathRewrite:{'^/zc':''}
                }),
                proxy('/dt',{
                    // 代理的目标地址
                    target : 'https://www.duitang.com/napi/blog/list/by_filter_id/',
                    changeOrigin:true ,
                    // 路径规则重写，去除代理名
                    pathRewrite:{'^/dt':''}
                })
            ]
        }
    })
})
// 文件复制
gulp.task("html", async () => {
    return gulp.src(["./src/html/*.html"])
        // 存在就直接复制，不存在 会自动创建文件夹
        .pipe(gulp.dest("./dist/html/"))
        // 自动刷新
        .pipe(connect.reload());
});
// sass 编译功能 css
gulp.task("sass", () => {
    return gulp.src(["./src/styles/*.scss"])
        .pipe(sass().on("error", sass.logError))
        .pipe(gulp.dest("./dist/styles/"))
        .pipe(connect.reload())
})
// css 压缩
gulp.task("sass-build", async () => {
    return gulp.src(["./src/styles/*.scss"])
        .pipe(sass().on("error", sass.logError))
        .pipe(cssmin())
        .pipe(gulp.dest("./dist/styles/"))
})
// js 
gulp.task("javascripts-dev", async () => {
    await gulp.src(["./src/javascripts/*.js"])
        .pipe(gulp.dest("./dist/javascripts"))
        .pipe(connect.reload())
})
// js 压缩 ES6 => ES5
gulp.task("javascripts", async () => {
    await gulp.src(["./src/javascripts/*.js"])
        .pipe(babel({
            presets: ['@babel/env']
        }))
        .pipe(uglify())
        .pipe(gulp.dest("./dist/javascripts"))
})
// gulp 监听 ： 自动更新
gulp.task("watch", async () => {
    // 进行列队执行 series 同步
    await gulp.watch(["./src/html/*.html"], gulp.series("html"));
    // css
    await gulp.watch(["./src/styles/*.scss"], gulp.series("sass"))
    // js
    await gulp.watch("./src/javascripts/*.js", gulp.series("javascripts-dev"));
})

// 指令 同时执行
gulp.task("default", gulp.parallel("watch", "connect"));

gulp.task("build", gulp.series("javascripts", "sass-build"))

